```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>分布式事务全解析 - 专业指南</title>
    <link href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            color: #333;
            line-height: 1.6;
            background-color: #f8fafc;
        }
        .container {
            max-width: 1200px;
        }
        .hero {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            border-radius: 0 0 20px 20px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
        }
        .hero-title {
            font-family: 'Noto Serif SC', serif;
            font-weight: 700;
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
        }
        .hero-subtitle {
            opacity: 0.9;
        }
        .content-card {
            background: white;
            border-radius: 12px;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }
        .content-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
        }
        .icon-box {
            width: 50px;
            height: 50px;
            border-radius: 12px;
            display: flex;
            align-items: center;
            justify-content: center;
            margin-bottom: 1rem;
        }
        h1, h2, h3, h4 {
            font-family: 'Noto Serif SC', serif;
            font-weight: 600;
            color: #2d3748;
        }
        h2 {
            position: relative;
            padding-bottom: 10px;
            margin-bottom: 1.5rem;
        }
        h2:after {
            content: "";
            position: absolute;
            bottom: 0;
            left: 0;
            width: 60px;
            height: 4px;
            background: linear-gradient(90deg, #667eea, #764ba2);
            border-radius: 2px;
        }
        .code-block {
            background: #f8f8f8;
            border-radius: 8px;
            padding: 1rem;
            font-family: monospace;
            border-left: 4px solid #667eea;
        }
        .diagram-container {
            background: white;
            padding: 1.5rem;
            border-radius: 12px;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
            margin: 2rem 0;
        }
        .acid-item {
            display: flex;
            align-items: flex-start;
            margin-bottom: 1rem;
            padding: 1rem;
            border-radius: 8px;
            background: rgba(102, 126, 234, 0.1);
        }
        .acid-icon {
            flex-shrink: 0;
            margin-right: 1rem;
            color: #667eea;
        }
        .image-container {
            text-align: center;
            margin: 2rem 0;
        }
        .image-container img {
            max-width: 100%;
            border-radius: 8px;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
        }
        .comparison-table {
            width: 100%;
            border-collapse: collapse;
            margin: 1.5rem 0;
        }
        .comparison-table th, .comparison-table td {
            padding: 12px 15px;
            text-align: left;
            border-bottom: 1px solid #e2e8f0;
        }
        .comparison-table th {
            background-color: #f7fafc;
            font-weight: 600;
        }
        .comparison-table tr:hover {
            background-color: #f8fafc;
        }
        .feature-badge {
            display: inline-block;
            padding: 0.25rem 0.75rem;
            border-radius: 9999px;
            font-size: 0.75rem;
            font-weight: 600;
            text-transform: uppercase;
            letter-spacing: 0.05em;
        }
        .badge-primary {
            background-color: #ebf4ff;
            color: #667eea;
        }
        .badge-success {
            background-color: #f0fff4;
            color: #48bb78;
        }
        .badge-warning {
            background-color: #fffaf0;
            color: #ed8936;
        }
        .badge-danger {
            background-color: #fff5f5;
            color: #f56565;
        }
        .feature-box {
            border-left: 4px solid;
            padding-left: 1rem;
            margin-bottom: 1.5rem;
        }
        .feature-box-primary {
            border-color: #667eea;
        }
        .feature-box-success {
            border-color: #48bb78;
        }
        .feature-box-warning {
            border-color: #ed8936;
        }
        .feature-box-danger {
            border-color: #f56565;
        }
        .note {
            background: #f0f9ff;
            border-left: 4px solid #4299e1;
            padding: 1rem;
            border-radius: 0 8px 8px 0;
            margin: 1.5rem 0;
        }
        .note-title {
            font-weight: 600;
            color: #2b6cb0;
            margin-bottom: 0.5rem;
        }
        .hover-effect {
            transition: all 0.3s ease;
        }
        .hover-effect:hover {
            transform: scale(1.02);
        }
    </style>
</head>
<body class="antialiased">
    <!-- Hero Section -->
    <section class="hero py-16 px-4 md:px-8 mb-12">
        <div class="container mx-auto">
            <div class="max-w-3xl mx-auto text-center">
                <h1 class="hero-title text-4xl md:text-5xl mb-4">分布式事务全解析</h1>
                <p class="hero-subtitle text-xl md:text-2xl mb-8">深入理解分布式系统中的事务处理原理与实践</p>
                <div class="flex justify-center space-x-4">
                    <span class="feature-badge badge-primary">ACID</span>
                    <span class="feature-badge badge-success">CAP</span>
                    <span class="feature-badge badge-warning">BASE</span>
                    <span class="feature-badge badge-danger">2PC/3PC</span>
                </div>
            </div>
        </div>
    </section>

    <div class="container mx-auto px-4 md:px-8">
        <!-- Introduction Section -->
        <section class="mb-16">
            <div class="content-card p-8 mb-8">
                <h2 class="text-3xl mb-6"><i class="fas fa-lightbulb text-yellow-500 mr-3"></i>什么是事务</h2>
                <p class="text-lg mb-6">事务是应用程序中一系列严密的操作，所有操作必须成功完成，否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性，一个事务中的一系列的操作要么全部成功，要么一个都不做。</p>
                
                <div class="grid md:grid-cols-2 gap-8 mt-8">
                    <div>
                        <h3 class="text-xl mb-4 font-semibold"><i class="fas fa-database text-blue-500 mr-2"></i>本地事务</h3>
                        <div class="image-container hover-effect">
                            <img src="https://cdn.nlark.com/yuque/0/2022/png/21449790/1651156867728-9592fd52-a096-4987-a544-2ad4b87cd8f4.png" alt="本地事务示意图">
                            <p class="text-sm text-gray-500 mt-2">单体架构中的本地事务</p>
                        </div>
                        <div class="code-block mt-4">
                            <code>
                                @Transactional // 把四次数据库的操作放在同一个事务中<br>
                                public void test3(){<br>
                                &nbsp;&nbsp;dao.add1();<br>
                                &nbsp;&nbsp;dao.add2();<br>
                                &nbsp;&nbsp;dao.add3();<br>
                                &nbsp;&nbsp;dao.add4();<br>
                                }
                            </code>
                        </div>
                    </div>
                    <div>
                        <h3 class="text-xl mb-4 font-semibold"><i class="fas fa-network-wired text-purple-500 mr-2"></i>分布式事务</h3>
                        <div class="image-container hover-effect">
                            <img src="https://cdn.nlark.com/yuque/0/2022/png/21449790/1651156914985-714223b6-7b93-44f9-8168-b175da96028a.png" alt="分布式事务示意图">
                            <p class="text-sm text-gray-500 mt-2">微服务架构中的分布式事务</p>
                        </div>
                        <p class="mt-4">在微服务的实现架构系统之中，由于会将不同的业务拆分到不同的微服务实例之中，这样就会彻底的丧失传统数据库事务的支持，这样在进行数据更新时，每一个微服务都仅仅只会与当前关联的数据库实现事务处理，不同的微服务之间没有事务上的联系，一旦出现了错误的数据就可能会出现违反ACID原则的操作，从而使得整个的业务数据出现混乱，导致业务处理出现问题。</p>
                    </div>
                </div>
            </div>
        </section>

        <!-- ACID Section -->
        <section class="mb-16">
            <div class="content-card p-8">
                <h2 class="text-3xl mb-6"><i class="fas fa-atom text-blue-500 mr-3"></i>事务特性(ACID)</h2>
                
                <div class="grid md:grid-cols-2 gap-6">
                    <div class="acid-item">
                        <div class="acid-icon">
                            <i class="fas fa-dice-one text-2xl"></i>
                        </div>
                        <div>
                            <h3 class="text-xl font-semibold mb-2">原子性（Atomicity）</h3>
                            <p>所谓的原子性就是说，在整个事务中的所有操作，要么全部完成，要么全部不做，没有中间状态。对于事务在执行中发生错误，所有的操作都会被回滚，整个事务就像从没被执行过一样。</p>
                        </div>
                    </div>
                    
                    <div class="acid-item">
                        <div class="acid-icon">
                            <i class="fas fa-dice-two text-2xl"></i>
                        </div>
                        <div>
                            <h3 class="text-xl font-semibold mb-2">一致性（Consistency）</h3>
                            <p>事务的执行必须保证系统的一致性，就拿转账为例，A有500元，B有300元，如果在一个事务里A成功转给B50元，那么不管并发多少，不管发生什么，只要事务执行成功了，那么最后A账户一定是450元，B账户一定是350元。</p>
                        </div>
                    </div>
                    
                    <div class="acid-item">
                        <div class="acid-icon">
                            <i class="fas fa-dice-three text-2xl"></i>
                        </div>
                        <div>
                            <h3 class="text-xl font-semibold mb-2">隔离性（Isolation）</h3>
                            <p>所谓的隔离性就是说，事务与事务之间不会互相影响，一个事务的中间状态不会被其他事务感知。</p>
                        </div>
                    </div>
                    
                    <div class="acid-item">
                        <div class="acid-icon">
                            <i class="fas fa-dice-four text-2xl"></i>
                        </div>
                        <div>
                            <h3 class="text-xl font-semibold mb-2">持久性（Durability）</h3>
                            <p>所谓的持久性，就是说一单事务完成了，那么事务对数据所做的变更就完全保存在了数据库中，即使发生停电，系统宕机也是如此。</p>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- CAP & BASE Section -->
        <section class="mb-16">
            <div class="grid md:grid-cols-2 gap-8">
                <div class="content-card p-8">
                    <h2 class="text-3xl mb-6"><i class="fas fa-chess-board text-purple-500 mr-3"></i>CAP理论</h2>
                    
                    <div class="mb-6">
                        <div class="feature-box feature-box-primary">
                            <h3 class="text-xl font-semibold mb-2">一致性 (Consistency)</h3>
                            <p>是指数据的强一致性，如果在某个节点更新了数据，那么在其他节点需要同时看到更新后的数据。</p>
                        </div>
                        
                        <div class="feature-box feature-box-success">
                            <h3 class="text-xl font-semibold mb-2">可用性 (Availability)</h3>
                            <p>是指每个请求都能在合理的时间内获得符合预期的响应结果。</p>
                        </div>
                        
                        <div class="feature-box feature-box-warning">
                            <h3 class="text-xl font-semibold mb-2">分区容错性 (Partition tolerance)</h3>
                            <p>是指遇到任何网络分区故障的时候，系统仍然能够正常提供服务，除非是整个网络环境都发生了故障。</p>
                        </div>
                    </div>
                    
                    <div class="image-container hover-effect">
                        <img src="https://cdn.nlark.com/yuque/0/2022/png/21449790/1651156932222-0a25cc68-a137-4967-aa34-2ebb35546a7b.png" alt="CAP理论示意图">
                        <p class="text-sm text-gray-500 mt-2">CAP理论示意图</p>
                    </div>
                    
                    <div class="note mt-6">
                        <div class="note-title">重要说明</div>
                        <p>CAP中的一致性和可用性强调都是强一致性和强可用。强一致性：不管在任何时间段查询任何节点数据都必须一致。强可用：不管在任何时候访问都要有对应的结果响应。</p>
                    </div>
                </div>
                
                <div class="content-card p-8">
                    <h2 class="text-3xl mb-6"><i class="fas fa-chess text-green-500 mr-3"></i>BASE理论</h2>
                    
                    <div class="mb-6">
                        <div class="feature-box feature-box-primary">
                            <h3 class="text-xl font-semibold mb-2">基本可用 (Basically Available)</h3>
                            <p>是指不追求强可用性，当分布式系统遇到不可预估的故障时，允许牺牲部分功能的可用，从而保证核心功能可用。比如：对请求进行限流排队，对非核心服务进行降级。</p>
                        </div>
                        
                        <div class="feature-box feature-box-success">
                            <h3 class="text-xl font-semibold mb-2">软状态 (Soft state)</h3>
                            <p>是指允许系统中的数据存在中间状态，因为数据不要求强一致性了，所以数据就会存在一个中间状态，比如：数据同步中，支付中..。</p>
                        </div>
                        
                        <div class="feature-box feature-box-warning">
                            <h3 class="text-xl font-semibold mb-2">最终一致性 (Eventually consistent)</h3>
                            <p>是指数据不可能一直都是软状态，必须在一个时间期限之后达到各个节点的一致性，在此之后，所有的节点的数据都是一致的，系统达到最终一致性。</p>
                        </div>
                    </div>
                    
                    <div class="note bg-yellow-50 border-l-yellow-400">
                        <div class="note-title text-yellow-700">核心思想</div>
                        <p class="text-yellow-800">BASE 理论的核心思想是：即使无法做到强一致性，但每个应用都可以根据自身业务特点，采用适当的方式来使系统达到最终一致性和基本可用性。</p>
                    </div>
                </div>
            </div>
        </section>

        <!-- Distributed Solutions Section -->
        <section class="mb-16">
            <div class="content-card p-8">
                <h2 class="text-3xl mb-8"><i class="fas fa-puzzle-piece text-red-500 mr-3"></i>分布式事务解决方案</h2>
                
                <div class="grid md:grid-cols-3 gap-8">
                    <!-- 2PC -->
                    <div class="solution-card hover-effect">
                        <div class="icon-box bg-red-100 text-red-500">
                            <i class="fas fa-layer-group text-2xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold mb-3">两阶段提交 (2PC)</h3>
                        <p class="mb-4">2PC是指有两个阶段，预处理阶段和提交阶段。协调者向参与者发送prepare请求，参与者执行事务但不提交，然后协调者根据参与者响应决定提交或回滚。</p>
                        
                        <div class="image-container">
                            <img src="https://cdn.nlark.com/yuque/0/2022/png/21449790/1651157178312-32474bd1-c0d4-4e02-89e5-f5898ea3763e.png" alt="2PC预处理阶段">
                            <p class="text-sm text-gray-500 mt-2">2PC预处理阶段</p>
                        </div>
                        
                        <div class="mt-4">
                            <h4 class="font-semibold mb-2">缺点：</h4>
                            <ul class="list-disc pl-5 space-y-1">
                                <li>同步阻塞问题</li>
                                <li>单点故障问题</li>
                                <li>数据不一致问题</li>
                            </ul>
                        </div>
                    </div>
                    
                    <!-- 3PC -->
                    <div class="solution-card hover-effect">
                        <div class="icon-box bg-purple-100 text-purple-500">
                            <i class="fas fa-cubes text-2xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold mb-3">三阶段提交 (3PC)</h3>
                        <p class="mb-4">3PC 模型是在2PC 模型的基础上改进的版本，把 Prepare 阶段一分为二，形成CanCommit、PreCommit和doCommit 三个阶段，减少了阻塞现象。</p>
                        
                        <div class="image-container">
                            <img src="https://cdn.nlark.com/yuque/0/2022/png/21449790/1651157296382-0c1043d1-e94f-4f66-a052-a96ef77b692f.png" alt="3PC流程">
                            <p class="text-sm text-gray-500 mt-2">3PC流程示意图</p>
                        </div>
                        
                        <div class="mt-4">
                            <h4 class="font-semibold mb-2">改进点：</h4>
                            <ul class="list-disc pl-5 space-y-1">
                                <li>解决了单点故障问题</li>
                                <li>减少了事务阻塞现象</li>
                            </ul>
                        </div>
                    </div>
                    
                    <!-- TCC -->
                    <div class="solution-card hover-effect">
                        <div class="icon-box bg-green-100 text-green-500">
                            <i class="fas fa-code-branch text-2xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold mb-3">TCC模式</h3>
                        <p class="mb-4">TCC（Try，Confirm，Cancel）分为三个阶段：尝试执行具体业务代码，确认提交或取消操作。需要开发者手动实现各阶段逻辑。</p>
                        
                        <div class="image-container">
                            <img src="https://cdn.nlark.com/yuque/0/2022/png/21449790/1651157312295-f322401e-b8be-4772-9b33-9b58ca2e7b13.png" alt="TCC成功流程">
                            <p class="text-sm text-gray-500 mt-2">TCC成功流程</p>
                        </div>
                        
                        <div class="code-block mt-4">
                            <code>
                                //尝试方法<br>
                                function try(){<br>
                                &nbsp;&nbsp;//记录日志<br>
                                &nbsp;&nbsp;todo save A 转出了 100 元 <br>
                                &nbsp;&nbsp;todo save B 转入了 100 元 <br>
                                <br>
                                &nbsp;&nbsp;//执行转账<br>
                                &nbsp;&nbsp;update amount set balacne = balacne-100 where id = 1<br>
                                &nbsp;&nbsp;update amount set balacne = balacne+100 where id = 2<br>
                                }
                            </code>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Database Logs Section -->
        <section class="mb-16">
            <div class="content-card p-8">
                <h2 class="text-3xl mb-8"><i class="fas fa-archive text-indigo-500 mr-3"></i>数据库日志文件</h2>
                
                <div class="grid md:grid-cols-3 gap-8">
                    <!-- Undo Log -->
                    <div class="log-card hover-effect">
                        <div class="icon-box bg-blue-100 text-blue-500">
                            <i class="fas fa-undo text-2xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold mb-3">回滚日志 (Undo Log)</h3>
                        <p>记录数据被修改前的值，用于事务回滚。假设修改 tba 表中 id=2的行数据，把Name='B' 修改为Name = 'B2'，那么undo日志就会用来存放Name='B'的记录，如果这个修改出现异常，可以使用undo日志来实现回滚操作。</p>
                        
                        <div class="code-block mt-4">
                            <code>
                                -- undo log记录<br>
                                update t1 set name = "B" where id = 1<br>
                                -- 执行语句<br>
                                update t1 set name = 'B2' where id = 1
                            </code>
                        </div>
                    </div>
                    
                    <!-- Redo Log -->
                    <div class="log-card hover-effect">
                        <div class="icon-box bg-green-100 text-green-500">
                            <i class="fas fa-redo text-2xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold mb-3">重做日志 (Redo Log)</h3>
                        <p>记录修改后的数据，用于提交事务后写入数据文件，DB宕机后方便数据恢复。当数据库对数据做修改的时候，需要把数据页从磁盘读到buffer pool中，在buffer pool中进行修改。</p>
                        
                        <div class="note mt-4">
                            <div class="note-title">Buffer Pool是什么?</div>
                            <p>MySQL作为一个存储系统，具有缓冲池(buffer pool)机制，以避免每次查询数据都进行磁盘IO。缓冲池通常以页(page)为单位缓存数据。</p>
                        </div>
                    </div>
                    
                    <!-- Bin Log -->
                    <div class="log-card hover-effect">
                        <div class="icon-box bg-purple-100 text-purple-500">
                            <i class="fas fa-database text-2xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold mb-3">二进制日志 (Bin Log)</h3>
                        <p>记录整个mysql数据库的操作内容，对所有的引擎都适用，包括执行的DDL、DML，可以用来进行数据库的恢复及复制。有三种形式：statement、row、mixed。</p>
                        
                        <div class="mt-4">
                            <h4 class="font-semibold mb-2">三种形式：</h4>
                            <ul class="list-disc pl-5 space-y-1">
                                <li>statement：记录执行的sql语句</li>
                                <li>row：记录变化的所有数据</li>
                                <li>mixed：statement和row的组合</li>
                            </ul>
                        </div>
                    </div>
                </div>
                
                <div class="mt-8">
                    <h3 class="text-2xl font-semibold mb-4">日志写入顺序</h3>
                    <div class="image-container">
                        <img src="https://cdn.nlark.com/yuque/0/2022/png/21449790/1651157410499-82e1f5c3-6d29-4927-8cd7-2e671e2920e9.png" alt="日志写入顺序">
                        <p class="text-sm text-gray-500 mt-2">MySQL日志写入顺序示意图</p>
                    </div>
                </div>
            </div>
        </section>

        <!-- Seata Section -->
        <section class="mb-16">
            <div class="content-card p-8">
                <div class="flex items-center mb-6">
                    <img src="https://seata.io/img/seata_logo.png" alt="Seata Logo" class="h-12 mr-4">
                    <h2 class="text-3xl">Seata - 分布式事务解决方案</h2>
                </div>
                
                <div class="grid md:grid-cols-2 gap-8">
                    <div>
                        <h3 class="text-xl font-semibold mb-4">Seata是什么</h3>
                        <p class="mb-6">Seata 是一款开源的分布式事务解决方案，致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式，为用户打造一站式的分布式解决方案。</p>
                        
                        <h3 class="text-xl font-semibold mb-4">Seata术语</h3>
                        <div class="grid gap-4">
                            <div class="bg-gray-50 p-4 rounded-lg">
                                <h4 class="font-semibold text-blue-600">TC (Transaction Coordinator)</h4>
                                <p>事务协调者 - 维护全局和分支事务的状态，驱动全局事务提交或回滚。</p>
                            </div>
                            <div class="bg-gray-50 p-4 rounded-lg">
                                <h4 class="font-semibold text-green-600">TM (Transaction Manager)</h4>
                                <p>事务管理器 - 定义全局事务的范围：开始全局事务、提交或回滚全局事务。</p>
                            </div>
                            <div class="bg-gray-50 p-4 rounded-lg">
                                <h4 class="font-semibold text-purple-600">RM (Resource Manager)</h4>
                                <p>资源管理器 - 管理分支事务处理的资源，与TC交谈以注册分支事务和报告分支事务的状态，并驱动分支事务提交或回滚。</p>
                            </div>
                        </div>
                    </div>
                    
                    <div>
                        <h3 class="text-xl font-semibold mb-4">Seata事务模式</h3>
                        
                        <div class="mb-6">
                            <h4 class="font-semibold text-lg mb-2">AT模式 (自动模式)</h4>
                            <p>AT模式是在整个的Seata分布式事务处理之中最简单的一种操作模型，几乎不需要修改任何的程序代码，就可以直接实现分布式事务的处理。AT模式最大的特点是需要在每个微服务的数据库之中额外创建一张"undo log"数据表。</p>
                            
                            <div class="image-container mt-4">
                                <img src="https://cdn.nlark.com/yuque/0/2022/png/21449790/1651157672952-f7312129-6709-4d63-9d49-67ae46f17e7e.png" alt="Seata AT模式">
                                <p class="text-sm text-gray-500 mt-2">Seata AT模式示意图</p>
                            </div>
                        </div>
                        
                        <div>
                            <h4 class="font-semibold text-lg mb-2">TCC模式</h4>
                            <p>TCC 模式是指支持把自定义的分支事务纳入到全局事务的管理中。需要开发者实现prepare、commit和rollback三个阶段的逻辑。</p>
                            
                            <div class="code-block mt-4">
                                <code>
                                    @LocalTCC<br>
                                    public interface UserServiceTCC {<br>
                                    &nbsp;&nbsp;@TwoPhaseBusinessAction(name = "userServiceTcc",<br>
                                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;commitMethod = "commit",<br>
                                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rollbackMethod = "rollback")<br>
                                    &nbsp;&nbsp;public boolean prepareAdd(User user);<br>
                                    <br>
                                    &nbsp;&nbsp;public boolean commit(User user);<br>
                                    <br>
                                    &nbsp;&nbsp;public boolean rollback(User user);<br>
                                    }
                                </code>
                            </div>
                        </div>
                    </div>
                </div>
                
                <div class="mt-8">
                    <h3 class="text-2xl font-semibold mb-4">Seata AT模式执行原理</h3>
                    <div class="image-container">
                        <img src="https://cdn.nlark.com/yuque/0/2022/png/21449790/1651157764335-9555d42b-985f-482a-99de-9b568b9c15a6.png" alt="Seata AT执行原理">
                        <p class="text-sm text-gray-500 mt-2">Seata AT模式执行原理示意图</p>
                    </div>
                </div>
            </div>
        </section>
    </div>

    <script>
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            flowchart: {
                useMaxWidth: true,
                htmlLabels: true,
                curve: 'basis'
            }
        });
    </script>
</body>
</html>
```